Repository navigation
Conversation
|
Confidence: 3/5The code is careful and well tested, and the offline paths I could exercise behave as described. It does not merge cleanly into current main. The live Google/Antigravity flow cannot be verified, and the integration depends on a reverse-engineered third-party client. Checks run (worktree of the PR head, separate target dir):
Confidence bumps (can't do myself):
SummaryAdds a Google Antigravity browser OAuth login to
Positives:
Mapflowchart TD
A[app.rs + views/provider_oauth_flow.rs<br/>/connect dialog, paste callback, cancel] --> B[auth/antigravity_oauth.rs<br/>PKCE, token, refresh, project onboarding]
L[acp/login.rs<br/>terminal login] --> B
B --> P[persistence/auth.rs<br/>OAuth projectId]
C[llm/client.rs<br/>route google+OAuth, replay filtering] --> B
C --> T[llm/antigravity.rs<br/>Gemini SSE transport]
S[agent/subagent.rs] --> T
M[model/discovery.rs + extensions/antigravity.rs<br/>labels, OAuth model list] --> C
X[README, tests/acp_stdio.rs, chat.rs test fixes]
Start with Regressions
MigrationsNot needed. Before merging
|
|
Thanks for the work here, but I might not be planning to merge this one. The Antigravity OAuth flow relies on an unofficial Google service and on Antigravity's own OAuth client, so it may go against Google's terms of service. I'd rather not ship that in crabcode. I'll think about it more until there's probably a solution that won't go against Google's ToS changes. Have you checked out https://github.com/rynfar/meridian btw? (I have a branch in crabcode for it, feel free to check) |
Summary
/connect, using a generated Google authorization URL followed by a pasted full localhost callback URL.googlefor config/credential compatibility.OAuth client configuration
No Google OAuth client ID or secret is bundled, persisted in config, or compiled into the binary. Set
CRABCODE_ANTIGRAVITY_CLIENT_IDandCRABCODE_ANTIGRAVITY_CLIENT_SECRETin the runtime environment. The OAuth client must be authorized for the requested Google scopes/service and usehttp://localhost:51121/oauth-callbackas its redirect URI. An arbitrary new Google Cloud OAuth client does not guarantee Antigravity access. Existing refresh tokens remain bound to their original client.Missing/invalid settings fail with setup instructions without echoing values. Unit tests inject fake clients and do not mutate global environment variables.
Validation
1,896 unit tests and 7 ACP integration tests passed (3 pre-existing ignored tests).
cargo test --offline -- --test-threads=1cargo build --offline --bin crabcodecargo fmt --all -- --checkbash scripts/check-aisdk-boundary.shgit diff --checkOAuth, refresh, project onboarding, HTTP/SSE, signed-history, dialog, and cancellation tests use local fixtures; no Google token exchange or account authorization was performed during development. Live Google/Antigravity account eligibility and service availability still require a manual smoke test.
Two existing test fixtures were made environment-independent while running the suite: the edit-rendering fixture now uses the current checkout path, and the ACP stdio fixture explicitly avoids live Ollama discovery.
Manual smoke test
/connect→ Google Antigravity → Gemini via Antigravity (browser).http://localhost:51121/oauth-callback?...URL from the address bar even if the localhost page cannot load.This integration uses an unofficial Antigravity transport; Google account eligibility, service terms, and restrictions apply.